// 手机号正则校验
const phoneReg = /^1[3456789]\d{9}$/;
// 字体颜色#FFFFF正则表达式
const fcReg = /^(#[0-9a-fA-F]{6}$)|(#[0-9a-fA-F]{8}$)/;
// IP正则校验
const ipReg =
  /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$/;
// IP范围1.1.1.1~2.2.2.2
const ipRegBo =
  /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))~((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$/;
// IP子网
const ipNet =
  /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\/(1[6-9]|2[0-9]|3[0-2])$/;
// 密码校验
const pwReg = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{8,14}$/;
//数字的正则
const numReg = /^[0-9]*$/;
// 网址 http与https
const httpReg =
  /^(http|https):\/\/([\w\-\.#:*\/\\])+((\?([\S])*)|([^\u4e00-\u9fa5\s]*))$/;
// 私有域名正则
const yuRegPort =
  /^[a-zA-Z][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?(:\d{1,4})?$/;
// IP正则校验或存在端口
const ipRegPort =
  /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))(:\d{1,4})?$/;
// http 域名正则
const visitReg = /^([\w\-\.*])+$/;
// 应用路径校验
const appDirReg = /^.*\.\w+$/;
// 数字0-32，MASK正则
const maskReg = /^([0-9]|[12][0-9]|3[0-2])$/;
// 多IP正则表达式,用逗号分隔的iP
const ipDou =
  /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))(,((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))*$/;

// 邮箱正则
const emailReg =
  /^([a-zA-Z]|[0-9])(\w|\-)+(\.([a-zA-Z_]|[0-9])+)*@[a-zA-Z0-9]+\.(([a-zA-Z]{2,4})|([a-zA-Z]{2,4}\.[a-zA-Z]{2,4}))$/;

// 字母正则
const letterReg = /^[a-zA-Z0-9]+$/;

// 数字正则
const onlyNumReg = /^[0-9]+$/;

const keyValueReg = /(\w+|\d+){1}:+((\s+\w+|\d+)|(\w+|\d+)){1}/;

const domainReg =
  /^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$/;
const masknetReg =
  /^(254|252|248|240|224|192|128|0)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)$/;

const $reg = {
  phoneReg,
  fcReg,
  ipReg,
  pwReg,
  numReg,
  httpReg,
  appDirReg,
  visitReg,
  maskReg,
  ipDou,
  yuRegPort,
  ipRegPort,
  emailReg,
  letterReg,
  keyValueReg,
  domainReg,
  ipRegBo,
  ipNet,
  masknetReg,
  onlyNumReg,
};
export default $reg;
